package com.xltq.dao;

import com.xltq.entity.Cart;

import java.math.BigDecimal;
import java.util.List;

//操作购物车表的Dao层
public interface ICartDao {
    /**
     * 查询用户的购物车
     * @param uid 用户表中主键列 ---> 可以获取用户信息
     * @param pid 商品表中主键列 ---> 可以获取商品信息
     * @return 查询得到用户购物车数据
     * @throws Exception
     */
    Cart hasCat(int uid, int pid)throws Exception;

    /**
     * 修改购物(隐藏含义:修改购物车展示商品)
     * @param cart 购物车实体(封装着商品信息)
     * @throws Exception
     */
    void updateCart(Cart cart)throws Exception;

    /**
     * 添加购物车(隐藏含义:添加商品)
     * @param cart 购物车实体(封装着商品信息)
     * @throws Exception
     */
    void insertCart(Cart cart)throws Exception;

    /**
     * 查询对应用户的购物车信息
     * @param uid 用户id (得到用户信息)
     * @return 存储购物车实体类的list集合
     * @throws Exception
     */
    List<Cart> selectCartByUid(int uid)throws  Exception;

    /**
     * 通过购物车id删除购物车中一条数据
     * @param cid 购物车中id列(主键列) 记录购物车数据(用户和商品)
     * @throws Exception
     */
    void deleteCartByCid(int cid)throws  Exception;

    /**
     * 通过uid(用户)清空购物车中数据
     * ps:一个用户(uid)是可以购买多件商品,利用用户(uid),就可以清除用来购买的这些信息
     * @param uid 用户id
     * @throws Exception
     */
    void deleteCartByUid(int uid)throws  Exception;

    /**
     * 更新购物车中商品的数量(隐藏操作:更新数量的同时商品价格在计算(商品的小计值))
     * @param count  购物车中商品的小计
     * @param cnumbig 购物车中商品数量
     * @param cid 购物车id
     * @throws Exception
     */
    void updateByCid(BigDecimal count, BigDecimal cnumbig, int cid) throws Exception;
}
